package cn.yunyichina.provider.sb.vo;

import cn.yunyichina.provider.sb.entity.MedicalOutpatientFeeDetail;
import lombok.Getter;
import lombok.Setter;

/**
 * Created by 15-AK on 2017/7/12.
 */
@Getter
@Setter
public class MedicalOutpatientFeeDetailVo {
    /**    单据号	String(64)	预结算时可以为空,正式结算时不允许不为空;单据号并不是发票号,只是标识一个就诊流水号下一笔费用结算单据。门诊诊疗费用明细记录唯一ID	不可空**/
    private String documentNo;
    /**    门诊流水号	String(64)	唯一标示一次门诊	不可空**/
     private String outpatientSerialNo;
    /***    费用id	String(64)	费用id	不可空**/
     private String payNo;
    /**费用明细项目名称	String(256)	医院收费项目名称	不可空**/
    private String expenseDetailItemName	;
    /*** 费用明细项目编码	String(8)	医院收费项目编码	不可空**/
    private String expenseDetailItemNo;
    /***费用明细项目单位	String(16)		不可空***/
    private String expenseDetailUnit;
    /***费用明细项目规格	String(64)		不可空***/
    private String expenseDetailSpec;
    /***费用明细项目单价	String(16)	以元为单位，两位小数	不可空**/
    private Integer expenseDetailUnivalent;
    /***费用明细项目数量	String(16)		不可空**/
    private String expenseDetailQuantity;
    /** 费用明细项目金额	String(16)	填写优惠后的金额 总费用，以元为单位，两位小数	不可空 	以元为单位，两位小数	不可空**/
    private Integer expenseDetailAmount;
    /**总费用（实付）	String(16)**/
    private Integer totalExpense;
    /*** 自付比例	String(16)	如果医保已经支付,此处填写医保的乙类自付比例:丙类自费时100%,乙类按照实际比例传入;否则默认传入本地城镇职工医保的自付比例 针对明细的自付比例	不可空**/
    private Double selfPaymentRatio;
    /**项目规格	String(64)		可空**/
    private String itemSpec;
    /**项目剂型	String(64)		可空***/
    private String itemDosageForm;
    /***项目单位	String(64)		可空**/
    private String  itemUnit;
    /***项目产地名称	String(64)		可空**/
    private String itemOriginName;
    /***包装数量	String(16)		可空***/
    private String packageQuantity;
    /**包装单位	String(2)		可空***/
    private String packageUnit;
    /***最小剂量单位	String(2)		可空**/
    private String minDosageUnit;
    /**	单次用量	String(16)		可空***/
    private String singleDosage;
    /****用量单位	String(2)		可空**/
    private String dosageUnit;
    /***每天次数	String(3)		可空**/
    private String dailyFrequency;
    /***用药天数	String(6)		可空**/
    private String medicationDays;
    /***单复方标志	String(1)		可空**/
    private String singleCompundFlag;
    /***中草药贴数	String(6)		可空**/
    private String herbalMedicineAmount;
    /***	项目限价	String(16)	以元为单位，两位小数	可空**/
    private Integer itemPriceLimit;
    /**String(64)	审批编号	可空***/
    private String approvalNo;
    /***自费标志	String(1)	Y:是  N:否	可空***/
    private String selfExpenseFlag;
    /***	特殊用药标志	String(1)	Y:是  N:否	可空***/
    private String specialMedicationFlag;
    /**商业保险项目辅助信息	String(512)		可空**/
    private String commercialInsureInfo;
    /**单次数量	String(6)		可空***/
    private String singleQuantity;
    /**频率数值	String(6)		可空***/
    private String frequencyAmount;
    /***给药方式	String(1)		可空**/
    private String supplyType;
    /***频率代码	String(16)		可空**/
    private String frequencyCode;
    /***项目单位代码	String(8)		可空**/
    private String itemUnitCode;
    /**药品大规格序号	String(16)		可空***/
    private String drugSerialNo;
    /**药品大规格产地	String(64)		可空***/
    private String drugProduceOrigin;
    /***药品大规格数量	String(6)		可空**/
    private String drugQuantity;
    /**项目发生日期	Date		可空**/
    private String itemAccurDate;
    /***医生工号	String(16)		可空**/
    private String doctorNo;
    /***医生姓名	String(8)		可空**/
    private String doctorName;
    /**成分	String(256)		可空***/
    private String composition;
    /**适应症或主治功能	String(512)		可空**/
    private String indication;
    /***禁忌	String(512)		可空**/
    private String taboo;
    /***是否处方标识	String(1)	Y:是  N:否	可空**/
    private String prescriptionFlag;
    /***	限制用药标识	String(1)	Y:是  N:否	可空***/
    private String medicalRestrictionFlag;
    /***限制用药	String(256)		可空**/
    private String medicalRestriction;
    /**基药标识	String(1)	Y:是  N:否	可空**/
    private String baseMedicineFlag;
    /**	国药准字号	String(16)		可空**/
    private String nationDrugNo;
    /**	注册证号	String(32)		可空**/
    private String registrationNo;
    /**品牌	String(32)		可空**/
    private String  brand;
    /**项目英文名	String(64)		可空**/
    private String itemEnName;
    /**保内保外	String(64)		可空**/
    private String medicalSecurity;
    /****	最高限价1	String(16)	以元为单位，两位小数	可空**/
    private Integer priceCeiling1;
    /**最高限价2	String(16)	以元为单位，两位小数	可空**/
    private Integer priceCeiling2;
    /***最高限价3	String(16)	以元为单位，两位小数	可空**/
    private Integer priceCeiling3;
    /***最高限价4	String(16)	以元为单位，两位小数	可空**/
    private Integer priceCeiling4;
    /**商业保险结算范围金额	String(16)		可空**/
    private Integer insSettleAmount;
    /**	生产厂家	String(64)		可空**/
    private String manufacturer;
    /**报案号	String(64)	报案号	不可空**/
    private String caseNo;
    /**总条数	String(16)	记录总条数	不可空***/
    private Integer totalRows;
    /***当前第几条	String(16)	总条数确定下当前条数是第几条，从1开始计数	不可空**/
    private Integer currentOffset;
    /**	费用项目类别	String(2)	见 7.7费用项目类别	不可空	1**/
    private Short expenseCategory;

    public MedicalOutpatientFeeDetailVo buildMedicalOutpatientFeeDetailVo(MedicalOutpatientFeeDetail medicalOutpatientFeeDetail){
        this.setDocumentNo(medicalOutpatientFeeDetail.getMzFeeDetailId());
        this.setOutpatientSerialNo(medicalOutpatientFeeDetail.getMzFeeId());
        this.setPayNo(medicalOutpatientFeeDetail.getPayNo());
        this.setExpenseDetailItemName(medicalOutpatientFeeDetail.getFeeItemName());
        this.setExpenseDetailItemNo(medicalOutpatientFeeDetail.getFeeItemCode());
        this.setExpenseDetailUnit(medicalOutpatientFeeDetail.getFeeItemUnit());
        this.setExpenseDetailSpec(medicalOutpatientFeeDetail.getFeeItemSpec());
        this.setExpenseDetailUnivalent(medicalOutpatientFeeDetail.getFeeItemPrice());
        this.setExpenseDetailQuantity(medicalOutpatientFeeDetail.getFeeItemQty());
        this.setExpenseDetailAmount(medicalOutpatientFeeDetail.getFeeItemAmount());
        this.setTotalExpense(medicalOutpatientFeeDetail.getTotalAmount());
        this.setSelfPaymentRatio(Double.valueOf(medicalOutpatientFeeDetail.getSelfBurdenPercentage()));
        this.setCaseNo(medicalOutpatientFeeDetail.getCaseNo());

        this.setItemSpec(medicalOutpatientFeeDetail.getItemSpec());
        this.setItemDosageForm(medicalOutpatientFeeDetail.getItemType());
        this.setItemUnit(medicalOutpatientFeeDetail.getItemUnit());
        this.setItemOriginName(medicalOutpatientFeeDetail.getItemOrigin());
//        this.setPackageQuantity(medicalOutpatientFeeDetail.getP);
        this.setPackageUnit(medicalOutpatientFeeDetail.getPackageUnit());
        this.setMinDosageUnit(medicalOutpatientFeeDetail.getMiniDosageUnit());
        this.setSingleDosage(medicalOutpatientFeeDetail.getPerDose());
        this.setDosageUnit(medicalOutpatientFeeDetail.getDosageUnit());
        this.setDailyFrequency(medicalOutpatientFeeDetail.getPerDayTimes());
        this.setMedicationDays(medicalOutpatientFeeDetail.getMedicineDays());
        this.setSingleCompundFlag(medicalOutpatientFeeDetail.getSingleCompoundFlag());
        this.setHerbalMedicineAmount(medicalOutpatientFeeDetail.getChineseHerbalMedicineQty());
        this.setItemPriceLimit(medicalOutpatientFeeDetail.getItemLimitPrice());
        this.setApprovalNo(medicalOutpatientFeeDetail.getApprovalNo());
        this.setSelfExpenseFlag(medicalOutpatientFeeDetail.getSelfFeeFlag());
        this.setSpecialMedicationFlag(medicalOutpatientFeeDetail.getSpecialMedicineFlag());
        this.setCommercialInsureInfo(medicalOutpatientFeeDetail.getInsuranceAuxiliaryInfo());
        this.setSingleQuantity(medicalOutpatientFeeDetail.getSingleQty());
        this.setFrequencyAmount(medicalOutpatientFeeDetail.getFrequencyValue());
        this.setSupplyType(medicalOutpatientFeeDetail.getMedicineMethod());
        this.setFrequencyCode(medicalOutpatientFeeDetail.getFrequencyCode());
        this.setItemUnitCode(medicalOutpatientFeeDetail.getItemCode());
        this.setDrugSerialNo(medicalOutpatientFeeDetail.getDrugSn());
        this.setDrugProduceOrigin(medicalOutpatientFeeDetail.getDrugOrigin());
        this.setDrugQuantity(medicalOutpatientFeeDetail.getDrugSpecQty());
        this.setItemAccurDate(medicalOutpatientFeeDetail.getItemExecDate());
        this.setDoctorNo(medicalOutpatientFeeDetail.getDoctorCode());
        this.setDoctorName(medicalOutpatientFeeDetail.getDoctorName());
        this.setComposition(medicalOutpatientFeeDetail.getCombination());
        this.setIndication(medicalOutpatientFeeDetail.getFunctions());
        this.setTaboo(medicalOutpatientFeeDetail.getContraindication());
        this.setPrescriptionFlag(medicalOutpatientFeeDetail.getRecipeFlag());
        this.setMedicalRestrictionFlag(medicalOutpatientFeeDetail.getRestrictionsFlag());
        this.setMedicalRestriction(medicalOutpatientFeeDetail.getRestrictions());
        this.setBaseMedicineFlag(medicalOutpatientFeeDetail.getBaseDrugIdentification());
        this.setNationDrugNo(medicalOutpatientFeeDetail.getNationalMedicineId());
        this.setRegistrationNo(medicalOutpatientFeeDetail.getRegId());
        this.setBrand(medicalOutpatientFeeDetail.getBrand());
        this.setItemEnName(medicalOutpatientFeeDetail.getItemEnglishName());
        this.setMedicalSecurity(medicalOutpatientFeeDetail.getInsuranceRange());
        this.setPriceCeiling1(medicalOutpatientFeeDetail.getMaxLimitPrice1());
        this.setPriceCeiling2(medicalOutpatientFeeDetail.getMaxLimitPrice2());
        this.setPriceCeiling3(medicalOutpatientFeeDetail.getMaxLimitPrice3());
        this.setPriceCeiling4(medicalOutpatientFeeDetail.getMaxLimitPrice4());
        this.setInsSettleAmount(medicalOutpatientFeeDetail.getInsuranceSettleRangeAmount());
        this.setManufacturer(medicalOutpatientFeeDetail.getManufacturer());

        this.setTotalRows(medicalOutpatientFeeDetail.getTotalRows());
        this.setCurrentOffset(medicalOutpatientFeeDetail.getCurrentOffset());
        this.setExpenseCategory(medicalOutpatientFeeDetail.getFeeType());
        return this;
    }



}
